#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>

int cnt = 0;
int main()
{

  int cnt = 0;
  pid_t id = fork();
  if(id == 0)
  {
    while(1)
    { 
     // sleep(5);
     // int a = 10 / 0;
      sleep(1);
      printf("子进程正在运行中,pid:%d\n",getpid());
     //usr break;
  //    cnt++;
  //    if(cnt >= 5) {

  //      printf("子进程退出\n");
  //      exit(0);
  //    }
    }
  }
  else 
  {
    int status = 0;
    while(1)
    {
       sleep(1);
       pid_t ret = waitpid(id,&status,WNOHANG);
       if(ret == 0)
       {
         printf("子进程没有结束\n");
       }else{
         printf("子进程已经结束\n");
       }

     //  if(WIFEXITED(status))
     //  {
     //    printf("子进程正常退出，子进程退出状态码是:%d\n",WEXITSTATUS(status));
     //  }
    }//
  //  if(ret > 0)
  //  {
  //    printf("父进程正在等待子进程退出,子进程的退出状态码是:%d,子进程的异常信号是:%d\n",(status>>8)&0xFF,status&0x7F);
  //  }
  // // sleep(10);
  }
 // for(;;)
 // {
 //   pid_t id = fork();
 //   if(id < 0)
 //   {
 //     printf("子进程创建失败!,这是第%d尝试\n",cnt);
 //     break;
 //   }else if(id == 0){
 //     printf("我是子进程,pid:%d\n",getpid());
 //     sleep(30);
 //     exit(0);
 //   }
 //   cnt++;
 // }
}
